﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GSPatEditor.Pat
{
    class FrameDamangeInfo
    {
        public int AttackType;
        public int AttackRate;

        public int HitStopSelf;
        public int HitStopOther;

        public int HitVX;
        public int HitVY;
        public int HitG;

        public int SoundEffect;

        public int Bind;
    }

    enum FrameStateFlag
    {
        None = 0,
        SkillCancellable = 0x20,
        JumpCancellable = 0x200000,
    }

    enum FrameAttackFlag
    {
    }

    class FramePointReference
    {
        public Vector2D Position;
    }

    class AxisAlignedBox
    {
        public Vector2D Position1, Position2;
    }

    class Box
    {
        public Vector2D Position1, Position2;
        public int Rotation;
    }

    enum AlphaBlendOption
    {
        None = 0,
        One = 1,
        Two = 2,
    }

    class FrameImageTransformation
    {
        public AlphaBlendOption AlphaBlend;
        public Vector2D Scale;
        public int Rotate;
    }

    class Frame
    {
        public ImageRegion Image;
        public FrameImageTransformation ImageTransformation;
        public int FrameCount;
        public Vector2D Origin;

        public FrameDamangeInfo Damage;
        public FrameStateFlag StateFlag;
        public FrameAttackFlag AttackFlag;

        public readonly FramePointReference[] Points = new FramePointReference[3];

        public AxisAlignedBox PhysicsBox;

        public readonly List<Box> HitBoxes = new List<Box>();
        public readonly List<Box> AttackBoxes = new List<Box>();
    }
}
